package guavatest.caches;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;

import java.util.concurrent.TimeUnit;

/**
 * @Auther     : yxpweb
 * @Date       : 2021/8/10 21:36
 * @Description: 缓存在很多场景下都是相当有用的。例如，计算或检索一个值的代价很高，并且对同样的输入需要不止一次获取值的时候，就应当考虑使用缓存。
 * @link http://ifeve.com/google-guava-cachesexplained/
 * 你愿意消耗一些内存空间来提升速度。
 * 你预料到某些键会被查询一次以上。
 * 缓存中存放的数据总量不会超出内存容量。
 */
public class CacheCompResultTest {

    private static final LoadingCache<Long, IntHolder> graphs = CacheBuilder.newBuilder()
            .maximumSize(1000)
            .expireAfterWrite(10, TimeUnit.MINUTES)
            .build(
                    new CacheLoader<Long, IntHolder>() {
                        public IntHolder load(Long key) throws Exception {
                            IntHolder intHolder = new IntHolder();
                            intHolder.setValue(90);
                            return intHolder;
                        }
                    });

    public static void main(String[] args) throws Exception {
        IntHolder intHolder = graphs.get(100l);
        System.out.println(intHolder.getValue());
    }
}
